/*
 * Copyright  rocedu@BESTI   rocedu@qq.com   All rights reserved.
 *
 * 文件创建程序，接受一个命令行参数作为文件名并创建该文件。
 * 如果参数不正确或文件创建失败，程序将打印错误信息。
 */

#include <stdio.h>
#include <fcntl.h>
#include <string.h>
#include <linux/limits.h>
#include "rocerror.h"  // 新增头文件

int main(int argc, char *argv[]) {
    char filename[PATH_MAX] = {0};

    // 参数检查改用 app_error
    if (argc != 2) {
        app_error("You must supply a filename as an argument");
    }

    // 保留安全的字符串拷贝逻辑
    strncpy(filename, argv[1], sizeof(filename) - 1);
    filename[sizeof(filename) - 1] = '\0';

    // 文件创建错误改用 unix_error (自动附加系统错误信息)
    if (creat(filename, 00644) == -1) {
        char error_msg[PATH_MAX + 50];
        snprintf(error_msg, sizeof(error_msg), "Can't create file '%s'", filename);
        unix_error(error_msg);  // 自动包含错误描述并退出
    }

    return 0;
}
